﻿using System.Collections.Generic;
using Nop.Web.Framework.Mvc;
using Nop.Web.Models.Media;

namespace Nop.Web.Models.Catalog
{
    public partial class ProductOverviewModel : BaseNopEntityModel
    {
        public ProductOverviewModel()
        {
            ProductPrice = new ProductPriceModel();
            DefaultPictureModel = new PictureModel();
            SpecificationAttributeModels = new List<ProductSpecificationModel>();
            ProductReview = null;
            ProductStore = null;
        }

        public string Name { get; set; }
        public string ShortDescription { get; set; }
        public string FullDescription { get; set; }
        public string SeName { get; set; }
        public int ProductVariantCount { get; set; }
        public bool OutOfStock { get; set; }

        //price
        public ProductPriceModel ProductPrice { get; set; }
        //product picture
        public PictureModel DefaultPictureModel { get; set; }
        //specification attributes
        public IList<ProductSpecificationModel> SpecificationAttributeModels { get; set; }
        // rating attribute
        public ProductReviewModel ProductReview { get; set; }
        //store
        public ProductStoreModel ProductStore { get; set; }

        #region Nested Classes

        public partial class ProductPriceModel : BaseNopModel
        {
            public string OldPrice { get; set; }

            public string OpenBoxPrice { get; set; }

            public string Price { get; set; }

            public string MemberTierPrice { get; set; }

            public bool IsMembeTier { get; set; }

            public string SavePercentage { get; set; }
            public string SavePrice { get; set; }

            public bool DisableBuyButton { get; set; }

            public bool AvailableForPreOrder { get; set; }

            public bool ForceRedirectionAfterAddingToCart { get; set; }

            public bool AttributesRequiredBeforeAddingToCart { get; set; }
        }

        public partial class ProductStoreModel : BaseNopEntityModel
        {
            public ProductStoreModel()
            {
                StorePictureModel = new PictureModel();
            }

            public string Name { get; set; }

            public string SeName { get; set; }

            public bool IsActive { get; set; }

            public PictureModel StorePictureModel { get; set; }
        }

        public partial class ProductReviewModel : BaseNopModel
        {
            public double RatingAverage { get; set; }

            public int TotalReviews { get; set; }

            public int RatingSum { get; set; }

            public bool AllowCustomerReviews { get; set; }

            public int[] SymbolValues { get; set; }
        }

        #endregion
    }
}